<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>ContainerFactoryBox.swift - Slather</title>
<link href="slather.css" media="all" rel="stylesheet">
</head>
<body>
<header><div class="row"><a href="index.html"><img src="logo.jpg" alt="Slather logo"></a></div></header><div class="row"><div id="reports">
<h2 class="cov_title">
<span>Coverage for "ContainerFactoryBox.swift" : </span><span class="cov_high">100.00%</span>
</h2>
<h4 class="cov_subtitle">(27 of 27 relevant lines covered)</h4>
<h4 class="cov_filepath">RouteComposer/Classes/Router/Type Erasure/Boxes/ContainerFactoryBox.swift</h4>
<table class="source_code">
<tr class="never">
<td class="num">1</td>
<td class="src"><pre><code class="objc">//</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">2</td>
<td class="src"><pre><code class="objc">// RouteComposer</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">3</td>
<td class="src"><pre><code class="objc">// ContainerFactoryBox.swift</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">4</td>
<td class="src"><pre><code class="objc">// https://github.com/ekazaev/route-composer</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">5</td>
<td class="src"><pre><code class="objc">//</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">6</td>
<td class="src"><pre><code class="objc">// Created by Eugene Kazaev in 2018-2022.</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">7</td>
<td class="src"><pre><code class="objc">// Distributed under the MIT license.</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">8</td>
<td class="src"><pre><code class="objc">//</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">9</td>
<td class="src"><pre><code class="objc">// Become a sponsor:</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">10</td>
<td class="src"><pre><code class="objc">// https://github.com/sponsors/ekazaev</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">11</td>
<td class="src"><pre><code class="objc">//</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">12</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">13</td>
<td class="src"><pre><code class="objc">import Foundation</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">14</td>
<td class="src"><pre><code class="objc">import UIKit</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">15</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">16</td>
<td class="src"><pre><code class="objc">struct ContainerFactoryBox&lt;F: ContainerFactory&gt;: PreparableAnyFactory, AnyFactoryBox, MainThreadChecking, CustomStringConvertible {</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">17</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">18</td>
<td class="src"><pre><code class="objc">    typealias FactoryType = F</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">19</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">20</td>
<td class="src"><pre><code class="objc">    var factory: FactoryType</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">21</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">22</td>
<td class="src"><pre><code class="objc">    let action: AnyAction</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">23</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">24</td>
<td class="src"><pre><code class="objc">    var children: [(factory: PostponedIntegrationFactory, context: AnyContext)] = []</code></pre></td>
<td class="coverage">76x</td>
</tr>
<tr class="never">
<td class="num">25</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">26</td>
<td class="src"><pre><code class="objc">    var isPrepared = false</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">27</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">28</td>
<td class="src"><pre><code class="objc">    init?(_ factory: FactoryType, action: AnyAction) {</code></pre></td>
<td class="coverage">76x</td>
</tr>
<tr class="covered">
<td class="num">29</td>
<td class="src"><pre><code class="objc">        guard !(factory is NilEntity) else {</code></pre></td>
<td class="coverage">76x</td>
</tr>
<tr class="covered">
<td class="num">30</td>
<td class="src"><pre><code class="objc">            return nil</code></pre></td>
<td class="coverage">15x</td>
</tr>
<tr class="covered">
<td class="num">31</td>
<td class="src"><pre><code class="objc">        }</code></pre></td>
<td class="coverage">61x</td>
</tr>
<tr class="covered">
<td class="num">32</td>
<td class="src"><pre><code class="objc">        self.factory = factory</code></pre></td>
<td class="coverage">61x</td>
</tr>
<tr class="covered">
<td class="num">33</td>
<td class="src"><pre><code class="objc">        self.action = action</code></pre></td>
<td class="coverage">61x</td>
</tr>
<tr class="covered">
<td class="num">34</td>
<td class="src"><pre><code class="objc">    }</code></pre></td>
<td class="coverage">61x</td>
</tr>
<tr class="never">
<td class="num">35</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">36</td>
<td class="src"><pre><code class="objc">    mutating func scrapeChildren(from factories: [(factory: AnyFactory, context: AnyContext)]) throws -&gt; [(factory: AnyFactory, context: AnyContext)] {</code></pre></td>
<td class="coverage">29x</td>
</tr>
<tr class="covered">
<td class="num">37</td>
<td class="src"><pre><code class="objc">        var otherFactories: [(factory: AnyFactory, context: AnyContext)] = []</code></pre></td>
<td class="coverage">29x</td>
</tr>
<tr class="covered">
<td class="num">38</td>
<td class="src"><pre><code class="objc">        var isNonEmbeddableFound = false</code></pre></td>
<td class="coverage">29x</td>
</tr>
<tr class="covered">
<td class="num">39</td>
<td class="src"><pre><code class="objc">        children = factories.compactMap { child -&gt; (factory: PostponedIntegrationFactory, context: AnyContext)? in</code></pre></td>
<td class="coverage">47x</td>
</tr>
<tr class="covered">
<td class="num">40</td>
<td class="src"><pre><code class="objc">            guard !isNonEmbeddableFound, child.factory.action.isEmbeddable(to: FactoryType.ViewController.self) else {</code></pre></td>
<td class="coverage">47x</td>
</tr>
<tr class="covered">
<td class="num">41</td>
<td class="src"><pre><code class="objc">                otherFactories.append(child)</code></pre></td>
<td class="coverage">12x</td>
</tr>
<tr class="covered">
<td class="num">42</td>
<td class="src"><pre><code class="objc">                isNonEmbeddableFound = true</code></pre></td>
<td class="coverage">12x</td>
</tr>
<tr class="covered">
<td class="num">43</td>
<td class="src"><pre><code class="objc">                return nil</code></pre></td>
<td class="coverage">12x</td>
</tr>
<tr class="covered">
<td class="num">44</td>
<td class="src"><pre><code class="objc">            }</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="covered">
<td class="num">45</td>
<td class="src"><pre><code class="objc">            return (factory: PostponedIntegrationFactory(for: child.factory), context: child.context)</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="covered">
<td class="num">46</td>
<td class="src"><pre><code class="objc">        }</code></pre></td>
<td class="coverage">47x</td>
</tr>
<tr class="covered">
<td class="num">47</td>
<td class="src"><pre><code class="objc">        return otherFactories</code></pre></td>
<td class="coverage">29x</td>
</tr>
<tr class="covered">
<td class="num">48</td>
<td class="src"><pre><code class="objc">    }</code></pre></td>
<td class="coverage">29x</td>
</tr>
<tr class="never">
<td class="num">49</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">50</td>
<td class="src"><pre><code class="objc">    func build(with context: AnyContext) throws -&gt; UIViewController {</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="covered">
<td class="num">51</td>
<td class="src"><pre><code class="objc">        let typedContext: FactoryType.Context = try context.value()</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="covered">
<td class="num">52</td>
<td class="src"><pre><code class="objc">        assertIfNotMainThread()</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="covered">
<td class="num">53</td>
<td class="src"><pre><code class="objc">        assertIfNotPrepared()</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="covered">
<td class="num">54</td>
<td class="src"><pre><code class="objc">        return try factory.build(with: typedContext, integrating: ChildCoordinator(childFactories: children))</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="covered">
<td class="num">55</td>
<td class="src"><pre><code class="objc">    }</code></pre></td>
<td class="coverage">35x</td>
</tr>
<tr class="never">
<td class="num">56</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">57</td>
<td class="src"><pre><code class="objc">}</code></pre></td>
<td class="coverage"></td>
</tr>
</table>
</div></div>
<footer><div class="row">
<p><a href="https://github.com/SlatherOrg/slather">Fork me on Github</a></p>
<p>&copy; 2022 Slather</p>
</div></footer><script src="highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script>
</body>
</html>
